﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sistema_Totem.Logica.Clases;
using System.Data;

namespace Sistema_Totem.Vista.Involucrados
{
    public partial class ListarModificarInvolucrado : System.Web.UI.Page
    {
        #region Atributos

          private string valor;
          private Involucrado involucrado = new Involucrado();
          private List<Involucrado> listaInvo = new List<Involucrado>();

        #endregion Atributos

        protected void Page_Load(object sender, EventArgs e)
        {

            //if (Session["tipo_usuario"].ToString() != "Analista")
            //{
            //    Response.Redirect("Login1.aspx");
            //}

            //if (Session["tipo_usuario"].ToString() != "Gerente")
            //{
            //    Response.Redirect("Login1.aspx");
            //}

            //if (Session["tipo_usuario"].ToString() != "Administrador")
            //{
            //    Response.Redirect("Login1.aspx");
            //}

            if (!IsPostBack)
            {
                GridViewModificarInvolucrado.DataSource = CargarInvolucradoTabla();
                GridViewModificarInvolucrado.DataBind();
            }
            OcultarColumna();
        }

        public DataTable CargarInvolucradoTabla()
        {
            List<Involucrado> listaInvolucrado = new List<Involucrado>();
            listaInvolucrado = involucrado.ConsultartodosTodosInvolucrado();
            // Generar la DataTable de la lista de usuario
            DataTable dataTable = new DataTable();
            //Crea las columnas de la tabla en el GridView
            dataTable.Columns.Add("Id", typeof(int));
            dataTable.Columns.Add("Involucrado", typeof(string));
            dataTable.Columns.Add("Rol", typeof(string));

            //Se recorre la lista de usuario para asignarle al "DataTable"
            foreach (Involucrado involucrados in listaInvolucrado)
            {
                dataTable.Rows.Add(involucrados.Id, involucrados.Nombre, involucrados.Rol.Nombre);
            }
            // guardamos la lista de usuarios en la variable Session
            Session["listaInvolucrados"] = listaInvolucrado;
            return dataTable;

        }

        #region Cargar GridView (nombre/tipo)
        /// <summary>
        /// Método que me llena un GridView dependiendo
        /// de la busqueda si es por tipo o por nombre.
        /// </summary>
        /// <param name="involucrado"></param>
        /// <returns></returns>
        public DataTable CargarInvolucradoTabla2(List<Involucrado> listaInvolucrados, int caso, string valor)
        {
            // Generar la DataTable de la lista de materias
            DataTable table1 = new DataTable();
            //Crea las columnas de la tabla en el GridView
            table1.Columns.Add("Id", typeof(int));
            table1.Columns.Add("Involucrado", typeof(string));
            table1.Columns.Add("Rol", typeof(string));
            if (caso == 1)
            {
                foreach (Involucrado involucrado in listaInvolucrados)
                {
                    if (involucrado.Nombre == valor)
                    {
                        table1.Rows.Add(involucrado.Id, involucrado.Nombre, involucrado.Rol.Nombre);
                    }
                }
            }
            else
            {
                if (caso == 2)
                {
                    foreach (Involucrado involucrado in listaInvolucrados)
                    {
                        if (involucrado.Rol.Nombre == valor)
                        {
                            table1.Rows.Add(involucrado.Id, involucrado.Nombre, involucrado.Rol.Nombre);
                        }
                    }
                }
            }
            return table1;
        }
        #endregion Cargar GridView (nombre/tipo)

        /// <summary>
        /// Accion del boton de buscar
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {
            try
            {
                Mensaje.Visible = false;

                switch (Convert.ToInt32(tipoBusqueda.SelectedValue))
                {
                    case 1:
                        listaInvo = new List<Involucrado>();
                        listaInvo = (List<Involucrado>)Session["listaInvolucrados"];
                        valor = textBuscar.Text;

                        GridViewModificarInvolucrado.DataSource = CargarInvolucradoTabla2(listaInvo, 1, valor);
                        GridViewModificarInvolucrado.DataBind();
                        break;

                    case 2:
                        listaInvo = new List<Involucrado>();
                        listaInvo = (List<Involucrado>)Session["listaInvolucrados"];
                        valor = textBuscar.Text;

                        GridViewModificarInvolucrado.DataSource = CargarInvolucradoTabla2(listaInvo, 2, valor);
                        GridViewModificarInvolucrado.DataBind();

                        break;
                }
                this.OcultarColumna();
            }
            catch
            {

            }
        }
        // Oculta la columna del id
        public void OcultarColumna()
        {
            GridViewModificarInvolucrado.HeaderRow.Cells[0].Visible = false;
            foreach (GridViewRow row in GridViewModificarInvolucrado.Rows)
            {
                row.Cells[0].Visible = false;
            }
        }

        // Este metodo se ejecuta al momento de seleccionar algun involucrado a modificar
        protected void GridViewModificarInvolucrado_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridViewRow row = GridViewModificarInvolucrado.SelectedRow;
            int idElegido = Convert.ToInt32(row.Cells[0].Text);
            listaInvo = (List<Involucrado>)Session["listaInvolucrados"];
            // Recorremos la lista de los usuarios
            foreach (Involucrado involucrado in listaInvo)
            {
                // verificamos que el ID del usuario elegido sea igual al ID del usuario de la lista de usuarios
                if (involucrado.Id == idElegido)
                {
                    // Guardamos en una variable session el objeto del tipo usuario                 
                    Session["involucrado"] = involucrado;

                }
            }
            // Redireccionamos a la pagina del consultarUsuario
            Response.Redirect("../Involucrados/ModificarInvolucrado.aspx");
        }
        
        // Metodo para realizar la paginacion del gridview
        protected void GridViewModificarInvolucrado_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridViewModificarInvolucrado.PageIndex = e.NewPageIndex;
            GridViewModificarInvolucrado.DataSource = CargarInvolucradoTabla();
            GridViewModificarInvolucrado.DataBind();
            OcultarColumna();
        }

    }
}